LinuC-2 - 201試験 - 2.05:仮想化サーバー - 2.05.1 仮想マシンの仕組みとKVM

Last Update : August 21 2022 17:47:15

     

a. 仮想マシンの概要

仮想マシンとは、仮想化技術を利用して、コンピューター内にもうひとつの別のコンピューターを再現する技術のことです。
仮想化されるものには、仮想マシン以外にも、仮想サーバー、仮想ストレージ、仮想ネットワーク、仮想メモリなどがあります。
仮想マシンには、主に「ホスト型」、「ハイパーバイザー型」、「コンテナ型」の3種類のアーキテクチャ(ソフトウェアまたはハードウェアの基本的な設計概念)があります。

a. ホスト型

ホスト型とは、物理マシンにWindowsやLinuxなどのOSをインストールして、その中に仮想ソフトウェアとなるアプリケーションをインストールして、仮想マシンを実現させる方式のことです。ホスト型のメリットは、既に利用しているパソコンやサーバーにも簡単にインストールできるため、導入しやすいという点が挙げられます。
ホスト型の代表的なソフトウェアは以下の通りです。

  • VMware Player
  • Microsoft Virtual PC
  • Oracle Virtual Box


b. ハイパーバイザー型

ハイパーバイザー型は、ホストのOSを使わずに直接サーバーに仮想化用ソフトウェアをインストールして仮想マシンを実現する方式のことです。現在、最も主流な方式としてハイパーバイザー型が浸透しています。メリットとしては、ホストOSが不要で直接ハードウェアを制御できるようになることから、仮想マシンの処理速度低下を最小限に抑えられるといった点が挙げられます。
ハイパーバイザー型の代表的なソフトウェアは以下の通りです。

  • VMware vSphere ESXi
  • Citrix XenServer
  • Hyper-V
  • KVM
  • Xen

c. コンテナ型

コンテナ型は、物理マシンにWindowsやLinuxなどのホストOSをインストールして、コンテナ管理ソフトウェアをインストールして利用する方式のことです。コンテナ型は、アプリケーションやソフトウェアを実行環境と共にコンテナイメージ(コンテナのテンプレートファイル)として包括することから、コンテナ型と呼ばれています。コンテナ型の場合、コンテナイメージやソフトウェアそのものが軽量という特徴が挙げられます。
コンテナ型の代表的なソフトウェアは以下の通りです。

  • Docker


b. KVM

KVMは、Linux Kernel自体をハイパーバイザとする仕組みで、Kernel-based Virtual Machineの頭文字をとった略称で、カーネルベースの仮想マシンと訳されています。カーネルとは、OSの基本機能の役割を担うソフトウエアです。
KVMは現時点では、Intel VT-xやAMD-VといったCPUの仮想化支援機能を必要とし、完全仮想化によりOSの仮想化環境を提供します。
ハードウェアのエミュレーションやゲストOSの管理用のフロントエンドとして「QEMU」を使い、Linuxの上でゲストOSを動かします。
QEMUとは仮想マシン・エミュレータと呼ばれ、KVMなどの仮想マシンとともに利用する場合があります。この組み合わせにより、それぞれが得意な役割を担うことで、処理速度が向上するなどメリットが生まれます。
KVMは、Linuxカーネルに完全に組み込まれている。そのため、Linuxカーネルその物がハイパーバイザーとして動作する。仮想マシンは、Linux上のプロセスとして/dev/kvmというデバイスドライバを経由して動作する。
ハイパーバイザーには、仮想マシンを動かすための機能として、メモリ管理、プロセス管理、スケジューラ、入出力管理、デバイス管理、セキュリティ管理、ネットワークスタックなど、本来はOSが提供する機能が必要になる。しかし、KVMでは、これらの機能はLinuxに実装されているものを、そのまま利用する。

使用しているコンピュータにCPUの仮想化支援機能があるかどうか分からない場合は、/proc/cpuinfoを確認します。Intel VTの場合はvmxが、AMD-Vの場合はsvmがあるか否かが1つの判断基準となります。

● Intel VTの場合
$ grep vmx /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

● AMD-Vの場合
$ grep svm /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy

1. KVMパッケージのインストール
# yum install -y qemu-kvm libvirt virt-install libvirt-client virt-manager

インストールが終わったら、デーモンを起動しいます。

# systemctl start libvirtd # systemctl enable libvirtd

2. 仮想ネットワークの作成

VMをインストールすると、初期設定としてvirbr0という名前のブリッジインターフェースと、defaultという名前の仮想ネットワークが作成されます。defaultは、virbr0に接続されたNATルータとして動作し、内部でDHCPサーバが起動しています。

● 仮想ネットワークの確認
$ nmcli con | grep bridge virbr0 dffb02ec-554a-473e-b416-71334d164cbd bridge virbr0 # virsh net-list 名前 状態 自動起動 永続 ---------------------------------------------------------- default 動作中 はい (yes) はい (yes) # virsh net-info default 名前: default UUID: 3628ed33-3904-4ec8-a91c-4fdc51059cee 起動中: はい (yes) 永続: はい (yes) 自動起動: はい (yes) ブリッジ: virbr0

初期設定の仮想ネットワークdefaultはNATによるアウトバウンド通信が行えるものの、インバウンドの通信ができません。ホストマシンも含む、仮想ネットワークの外部から通信ができるように、新たにブリッジインターフェースをOS上に作成します。

● 仮想ネットワークの作成
# nmcli con add type bridge con-name br0 ifname br0 # nmcli con mod br0 bridge.stp no # nmcli con mod br0 ipv4.method manual ipv4.addresses "192.168.1.3/24" ipv4.gateway "192.168.1.254" ipv4.dns 192.168.1.1 # nmcli con mod br0 autoconnect yes

● 作成した仮想ネットワークの確認
# nmcli con | grep bridge br0 bbe3f90a-58ba-4d69-8992-5ba493f5d604 bridge br0 virbr0 dffb02ec-554a-473e-b416-71334d164cbd bridge virbr0

● プリッジと物理インターフェースの接続
# nmcli con add type bridge-slave ifname ens160 master br0 接続 'bridge-slave-ens160' (88b08213-efbf-4584-9148-c55c284db87d) が正常に追加されました

● ブリッジインターフェースbr0の設定を反映
# nmcli con up br0 接続が正常にアクティベートされました (master waiting for slaves) (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/7)

● コネクション設定を削除

物理インターフェースens160用のコネクション設定を削除します。SSHで設定対象ホストにリモート接続している場合、このタイミングで既存のIPアドレスが無効化されて接続が切断されるので注意してください。再接続するときは、ブリッジインターフェースbr0に設定したIPアドレスをSSHの接続先に指定します。

# nmcli con del ens160


c. QEMU

qemuはPCエミュレータであり,CPU命令のエミュー レーションや,BIOS,PIC(Programmable Interrupt Controller), APIC( Advanced PIC), ACPI (Advanced Configuration and Power Interface), ディスクコントローラ,NIC,VGAなどのエミュレー ションを行います.


z. 出題範囲概要

概要 :
  • 基本的な仮想マシンの仕組みについて理解し、KVMを導入して仮想マシンの実行環境を構築できる。

詳細 :
  • 仮想マシンの基本について知っている。
    ホスト型とハイパーバイザー型(KVM, VirtualBox, Xen)
    コンピューターリソース(CPU、メモリ、ストレージ、ネットワーク)の仮想化
  • KVMを導入し、仮想マシンが稼働するための環境構築および設定ができる。
    QEMU
    仮想化支援技術(vmxとsvm)
    /proc/cpuinfo, lscpu
    KVMモジュール(kvm-intelとkvm-amd)
    libvirtd
    virt-manager
    ネットワークの構成(bridge-utils)

  [ 例題 ] 


         

    www.it-shikaku.jp